package compilers.AST.basics;

import compilers.AST.Node;
import compilers.AST.types.TypeSpecifier;
import compilers.symbolTable.SymbolTableElement;
import compilers.symbolTable.SymbolTableScope;

public abstract class Parameter extends Node {
	
	protected TypeSpecifier fType;
	protected Identifier fIdentifier;
	protected boolean fConstant;
	
	public abstract void setIdentifier(Identifier ident);
	
	public abstract String getSymbolTableOutput();
	
	public abstract SymbolTableElement toSymbolTableElement();
	
	public abstract boolean compare(Parameter param, SymbolTableScope currentScope);
	
	public abstract TypeSpecifier getType();
	
	public abstract boolean isConstant();
	
	public Identifier getIdent() {
		return fIdentifier;
	}
	
	public Parameter() {
		
	}
	
	public Parameter(int lineNr) {
		super(lineNr);
	}

}
